#include <bits/stdc++.h>

using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;

struct bag{
    double w,v,p;
};

bool cmp(bag a,bag b){
    return a.p>b.p;
}

void Solve(){
    
    return;
}

int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr); std::cout.tie(nullptr);
    int N;
    double T;
    std::cin>>N>>T;
    std::vector<bag> gold(N);
    for(int i=0;i<N;i++){
        std::cin>>gold[i].w>>gold[i].v;
        gold[i].p=gold[i].v/gold[i].w;
    }
    std::sort(gold.begin(),gold.end(),cmp);
    double ans=0;
    for(int i=0;i<N;i++){
        if(T>0){
            if(gold[i].w<T){
                ans+=gold[i].v;
                T-=gold[i].w;
                if(T==0){
                    break;
                }
            }
            else{
                ans+=T*gold[i].p;
                break;
            }
        }
    }std::cout<<std::fixed<<std::setprecision(2)<<ans<<std::endl;


    return 0;
}

// 题目：部分背包问题
// 描述：
// 阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有N(N≤100) 堆金币，第i堆金币的总重量和总价值分别是wi,vi (1≤wi,vi≤100)。阿里巴巴有一个承重量为 T(T≤1000) 的背包，但并不一定有办法将全部的金币都装进去。他想装走尽可能多价值的金币。所有金币都可以随意分割，分割完的金币重量价值比（也就是单位价格）不变。请问阿里巴巴最多可以拿走多少价值的金币？
// 输入格式
// 第一行两个整数N,T。
// 接下来N行，每行两个整数wi,vi。
// 输出格式
// 一个实数表示答案，输出两位小数
// 输入样例
// 4 50
// 10 60
// 20 100
// 30 120
// 15 45
// 输出样例
// 240.00